/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.siseventos.managed;

import br.siseventos.dao.util.HibernateUtil;
import br.siseventos.model.TbAtividade;
import br.siseventos.model.TbEvento;
import br.siseventos.model.TdTipoAtividade;
import br.siseventos.service.AtividadeService;
import br.siseventos.service.EventoService;
import br.siseventos.service.TipoAtividadeService;
import br.siseventos.view.util.MessageHelper;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.servlet.http.HttpServletRequest;

@ManagedBean(name = "atividadeBean")
@ViewScoped
public class AtividadeBean extends BaseBean {
    // <editor-fold desc="Campos">

    private String idEvento;
    private String pp;
    private boolean novo = true;
    private List<TbAtividade> atividades = new ArrayList<TbAtividade>();
    private TbAtividade atividade = new TbAtividade();
    
    private TbEvento evento;
    private EventoService eventoService = new EventoService();
    private AtividadeService atividadeService = new AtividadeService();
    private TipoAtividadeService tipoAtividadeService = new TipoAtividadeService();
    // </editor-fold>
    // <editor-fold desc="Construtor">

    public AtividadeBean() {
        // Verifica se existem os parametros na query string
    }
    // </editor-fold>
    // <editor-fold desc="Actionlisteners">

    public void onNovaAtividade(ActionEvent actionEvent) {
        // Associando um novo objeto
        HibernateUtil.getSession().evict(atividade);
        atividade = new TbAtividade();
        
        novo = true;
    }

    public void onSalvarAtividade() {
        try {
            if (novo) {
                atividade.setTbEvento(evento);
                atividadeService.incluir(atividade);

                // Mostrando mensagem de erro
                MessageHelper.showGlobalMessage("Atividade atualizada com sucesso.", FacesMessage.SEVERITY_INFO);
            } else {
                atividadeService.alterar(atividade);

                // Mostrando mensagem de erro
                MessageHelper.showGlobalMessage("Atividade atualizada com sucesso.", FacesMessage.SEVERITY_INFO);
            }

        } catch (Exception e) {
        }
    }
    // </editor-fold>
    // <editor-fold desc="Getters e Setters">

    public String getIdEvento() {
        return idEvento;
    }

    public void setIdEvento(String idEvento) {
        this.idEvento = idEvento;
    }

    public TbAtividade getAtividade() {
        return atividade;
    }

    public void setAtividade(TbAtividade atividade) {
        this.atividade = atividade;
    }

    public List<TbAtividade> getAtividades() {
        if (idEvento != null) {
            try {
                atividades = atividadeService.consultar(Integer.parseInt(idEvento));
            } catch (Exception ex) {
            }
        }
        return atividades;
    }

    public void setAtividades(List<TbAtividade> atividades) {
        this.atividades = atividades;
    }

    public boolean isNovo() {
        return novo;
    }

    public void setNovo(boolean novo) {
        this.novo = novo;
    }

    // </editor-fold>
    // <editor-fold desc="Static getters">
    public List<TdTipoAtividade> getTiposAtividade() {
        List<TdTipoAtividade> lista = null;
        try {
            lista = tipoAtividadeService.consultarTodos();
        } catch (Exception e) {
        }
        return lista;
    }
    
    public String getTituloJanela(){
        return (novo) ? "Nova atividade" : "Editar atividade";
    }
    // </editor-fold>
    // <editor-fold desc="PostConstruct">

    @PostConstruct
    public void init() {
        FacesContext facesContext = FacesContext.getCurrentInstance();
        this.idEvento = facesContext.getExternalContext().getRequestParameterMap().get("ie");
        this.pp = ((HttpServletRequest) facesContext.getExternalContext().getRequest()).getHeader("Referer");
        try {
            evento = eventoService.consultar(Integer.parseInt(idEvento));
        } catch (Exception e) {
        }

    }
    // </editor-fold>
    // <editor-fold desc="Util">

    public void filtroAcesso() throws IOException {
        if (!pp.endsWith("gerenciarEvento.xhtml")) {

            FacesContext.getCurrentInstance().getExternalContext().redirect("home.xhtml");
        }
    }
    // </editor-fold>
}
